import Vue from 'vue'
import Vuex from 'vuex'

import { setItem, getItem, removeItem } from '@/utils/storage.js'
Vue.use(Vuex)
export default new Vuex.Store({
  // 保存公共数据
  state: {
    // 设置tokenInfo
    // 在设置vuex中的初值时，先从本地存储中取，如果取到了就用；取不到就用初始为空
    tokenInfo: getItem('tokenInfo') || {},
    userInfo: getItem('userInfo') || {} // id, name, photo
  },
  mutations: {
    // 设置mutations来修改tokenInfo
    mSetTokenInfo (state, tokenObj) {
      state.tokenInfo = tokenObj

      // 把token信息持久化到localstorage中
      setItem('tokenInfo', tokenObj)
    },
    // 整体设置：id, name, photo
    mSetUserInfo (state, userInfo) {
      state.userInfo = userInfo
      // 把token信息持久化到localstorage中
      setItem('userInfo', userInfo)
    },
    // 只更新头像
    mSetUserPhoto (state, photo) {
      state.userInfo.photo = photo
      // 把token信息持久化到localstorage中
      setItem('userInfo', state.userInfo)
    },
    // 清除token
    mClearTokenInfo (state) {
      state.tokenInfo = {}
      // 把token信息持久化到localstorage中
      removeItem('tokenInfo')
    }
  },
  actions: {
  },
  modules: {
  }
})
